package com.egao.orderB.biz;

import com.egao.common.core.damon.results.PageResult2;
import com.egao.common.core.web.JsonResult;
import com.egao.common.system.entity.User;
import com.egao.orderB.entity.Bill;
import com.egao.orderB.entity.BillWeekNum;
import com.egao.orderB.entity.WriteOff;
import org.apache.poi.ss.formula.functions.T;

import java.util.List;

/**
 *
 * 数据层接口
 * @author : Doman
 * @date : 2020-05-28 14:12:19
 * @version ：1.0
 */
public interface BillBiz {

	/** 获取实体类表格
	 * @param page
	 * @param bill
	 * @return
	 */
	public JsonResult list(PageResult2<T> page, Bill bill, User loginUser) throws Exception;

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<Bill> list(Bill bill, User loginUser);

	/** 获取实体类表格
	 * @param page
	 * @param bill
	 * @return
	 */
	public JsonResult listDel(PageResult2<T> page, Bill bill, User loginUser) throws Exception;

	/** 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<Bill> calendarBillNum(Bill bill, User loginUser)  throws Exception;

	/** 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<Bill> list(Bill bill);

	/** 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<Bill> exportsList(Bill bill);

	/** 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<Bill> findCarName(Bill bill);

	/** 获取实体类表格
	 * @return
	 */
	public List<Bill> normalCarList(List<String> carNoes);

	/** 获取实体类表格
	 * @param bill
	 * @return
	 */
	public Integer customerOfferTodayNum(Bill bill) ;


	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public Integer listNum(Bill bill, User loginUser);

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<BillWeekNum> listDayNum(Bill bill, User loginUser);

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<BillWeekNum> listWeekNum(Bill bill, User loginUser);

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public Integer getWeek(Bill bill);

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<BillWeekNum> listMonthNum(Bill bill, User loginUser);

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<BillWeekNum> listMonthCustomerAndDriverNum(Bill bill, User loginUser);

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<BillWeekNum> listUnPayNum(Bill bill, User loginUser);

	/**
	 * 获取实体类表格
	 * @param bill
	 * @return
	 */
	public List<BillWeekNum> listDockNum(Bill bill, User loginUser);

	/**
	 * 获取实体类表格
	 * @return
	 */
	public List<Bill> listUnExamine();

	/**
	 * 根据Id查询实体类
	 * @param bill
	 * @return
	 */
	public Bill getById(Bill bill);
	
	/**
	 * 保存实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean save(Bill bill, User loginUser);

	/**
	 * 下单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public Integer order(Bill bill, User loginUser);

	/**
	 * 平台接单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean platReceive_update(Bill bill, User loginUser);
	/**
	 * 平台接单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean platReceive(Bill bill, User loginUser);

	/**
	 * 指派车队接单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean carTeam(Bill bill, User loginUser);

	/**
	 * 做单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean make(Bill bill, User loginUser);

	/**
	 * 做单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean driverReceive(Bill bill, User loginUser);

	/**
	 * 提箱
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean upBox_substitute(Bill bill, User loginUser);

	/**
	 * 提箱
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean upBox_gps(Bill bill, User loginUser);

	/**
	 * 提箱
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean upBox(Bill bill, User loginUser);

	/**
	 * 到厂
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean arrivedFactory(Bill bill, User loginUser);

	/**
	 * 离厂
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean leaveFactory(Bill bill, User loginUser);

	/**
	 * 进港
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean inPort_substitute(Bill bill, User loginUser);

	/**
	 * 进港
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean inPort_gps(Bill bill, User loginUser);

	/**
	 * 进港
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean inPort(Bill bill, User loginUser);

	/**
	 * 发起费用清单
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean costBill(Bill bill, User loginUser);

	/**
	 * 状态更新
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean updateState(Bill bill, User loginUser);

	/**
	 * 客服审核
	 * @param bill
	 * @param loginUser
	 * @return
	 */
//	public boolean verify(Bill bill, User loginUser);

	/**
	 * 客服审核
	 * @param bill
	 * @param loginUser
	 * @return
	 */
//	public boolean driverFeeVerify(Bill bill, User loginUser);

	/**
	 * 货代确认
	 * @param bill
	 * @param loginUser
	 * @return
	 */
//	public boolean customerVerify(Bill bill, User loginUser);

	/**
	 * 货代费用未通过
	 * @param bill
	 * @param loginUser
	 * @return
	 */
//	public boolean customerDisagree(Bill bill, User loginUser);

	/**
	 * 修改实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean update(Bill bill, User loginUser);

	/**
	 * 修改实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean updateFinance(Bill bill, User loginUser);

	/**
	 * 修改实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean updateRemark(Bill bill, User loginUser);

	/**
	 * 修改实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean updateTotalFee_S_F(Bill bill, User loginUser);

	/**
	 * 修改箱号
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean updateBoxNumPic(Bill bill, User loginUser);

	/**
	 * 修改封号
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean updateSealnoPic(Bill bill, User loginUser);

	/**
	 * 修改文件预录入照片
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean updatePreEntryPic(Bill bill, User loginUser);

	/**
	 * 修改文件附件
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean updateAnnex(Bill bill, User loginUser);

	/**
	 * 修改文件拖拽
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean updateSfile(Bill bill, User loginUser);

	/**
	 * 修改实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean feeStateS(Bill bill, User loginUser);

	/**
	 * 修改实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean feeStateF(Bill bill, User loginUser);

	/**
	 * 修改实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean changeDropBox(Bill bill, User loginUser);

	/**
	 * 修改实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean changeWithholdingBox(Bill bill, User loginUser);

	/**
	 * 修改实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean changeCash(Bill bill, User loginUser);

	/**
	 * 删除实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean remove(Bill bill, User loginUser);

	/**
	 * 删除实体类
	 * @param bill
	 * @param loginUser
	 * @return
	 */
	public boolean billRecover(Bill bill, User loginUser);


	/** 获取实体类表格
	 * @param page
	 * @param bill
	 * @return
	 */
	public JsonResult writeOffAccountsList(PageResult2<T> page, WriteOff bill, User loginUser) throws Exception;


}
